#pragma once
#include <memory>

class GlobalObject {
public:
    static GlobalObject &GetInstance();
    virtual ~GlobalObject();

    void Func();

private:
    GlobalObject();
    GlobalObject(const GlobalObject &o) = delete;
    GlobalObject(GlobalObject &&o) = delete;
    static inline std::shared_ptr<GlobalObject> instance = nullptr;
};
